#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N=1e5+10,M=1e6+10;
int t,n,m,l,v,a,x,d,ans,ll,rr,cnt;
PII p[N];
int b,tree[M<<2];
int lowbit(int x)
{
    return x&(-x);
}
void add(int position,int x)
{
    while(position<=l)
    {
        tree[position]+=x;
        position+=lowbit(position);
    }
}
int query(int position)
{
    int res=0;
    if(position<0) return 0;
    while(position)
    {
        res+=tree[position];
        position-=lowbit(position);
    }
    return res;
}
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d%d",&n,&m,&l,&v);
        memset(p,0,sizeof(p));
        memset(tree,0,sizeof(tree));
        ans=0;cnt=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d%d",&d,&x,&a);
            if(a<=0&&x<=v) p[i]={-1,-1};
            else if(a>=0&&x>v) p[i]={d,l};
            else
            {
                double dx=d+(v*v-x*x)*1.0/(2*a);
                if(a<0) p[i]={d,min((int)ceil(dx)-1,l)};
                else if(a>0&&(int)floor(dx)+1<=l) p[i]={(int)floor(dx)+1,l};
                else p[i]={-1,-1};
            }

        }
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&b);
            add(b,1);
        }
        sort(p+1,p+n+1);
        ll=rr=-1;
        for(int i=1;i<=n;i++)
        {
            int t1=p[i].first,t2=p[i].second;
            if(query(t2)-query(t1-1))
            {
                ans++;
                if(t1>rr)
                {
                    cnt+=min(1,query(rr)-query(ll-1));
                    ll=t1;rr=t2;
                }
                else if(t1>ll&&t2<rr) ll=t1,rr=t2;
                else
                {
                    if(!(query(rr)-query(t1-1)))
                    {
                        cnt++;
                        ll=t1;
                        rr=t2;
                    }
                    else ll=t1;
                }
            }
        }
        cnt+=min(1,query(rr)-query(ll-1));
        printf("%d %d\n",ans,m-cnt);
    }
    return 0;
}
